Where tables are dot-deliminated, means a joined query, i.e. table1.table2

Auth - links a user with a seekered role

Store permission checks in cache, but then when a permission is changed, purge the cache where appropriate


hasPermission ($user, $slug, $seeker_id)
========================================
check a user has a given permission for the given seeker id

1. Get Permissions with matching slug
2. For each of the permissions, get the role, and check if the user has an entry in the auth table
   for a role with the given seeker id


getSeekersForPermissions($user, $slug)
======================================
get a list of seekers this user has for this permission

getPermissionsForSeeker($user, $seeker_id, $seeker_type, $getSeekerClass) get the permissions a user has for a seeker
=========================================================================


getPermissions($user, Sseeker_type) - same as above but grouped into seekers
===================================